/**
 ****************************************
 * @file dwt_delay.h
 * @author: AnRui
 * @version 0.1
 * @date  : 2025-09-30
 * @copyright Copyright (c) 2025
 * @desc: 在Cortex-M里面有一个外设叫DWT(DataWatchpoint andTrace)，
 *       是用于系统调试及跟踪，DWT的中文名字应该是：数据观察点触发
 *       之所以DWT可以实现延时功能，因为它有一个32的计数器CYCCNT，这是一个向上计数的计数器，
 *       当它溢出时会自动清零并重新开始向上计数，它的频率就是内核的主频。
 *       简单点说，就是内核时钟跳动一下，CYCCNT计数器就加1。
 * ***************************************
 */
#ifndef _DWT_DELAY_H_
#define _DWT_DELAY_H_

#include "stdint.h"


 // 延时最大不能超过36s
 /**
 ***********************************************************
 * @brief DWT初始化配置
 * @param
 * @return
 ***********************************************************
 */
void DwtDelayInit(void);

/**
***********************************************************
* @brief 微秒级延时函数
* @param nUs，最大延时时间( 2^32 / 内核主频 ) * 10^6 us
* @return
***********************************************************
*/
void DwtDelayNus(uint32_t nUs);

/**
***********************************************************
* @brief 毫秒级延时函数
* @param nMs，延时时间n毫秒
* @return
***********************************************************
*/
void DwtDelayNms(uint32_t nMs);

#endif
